package com.medical.medical.service;

import com.medical.medical.entity.Patient;
import com.medical.medical.entity.Record;

import java.util.Date;
import java.util.List;
/**
 * @authorDesc 你相信光吗？
 * @author GUOYN
 * @date 2022-09-14 09:46:25
 * @version 1.0.0
 * @description 用户/患者业务逻辑层接口
 */
public interface PatientService {
    /**
     * @Description: 患者验证登录
     * @author: 喜杨杨
     * @date: 2022/9/21 17:00
     * @param: [phone, password]
     * @return: com.medical.medical.entity.Patient
     **/
    Patient login(String phone, String password);

    /**
     * @Description: 患者用户注册
     * @author: 喜杨杨
     * @date: 2022/9/21 17:09
     * @param: [patient]
     * @return: boolean
     **/
    boolean addPatient(Patient patient);
    
    
    List<Record> getReport(int id);
    /**
      * @description 获得条件下表中数据总条数
      * @author GUOYN
      * @date 2022-09-14 10:30:41  * @param phone
     * @param name
     * @param idCard
      * @return {@link int}
      */
    int getPatientCount(long phone, String name, String idCard);
    /**
      * @description 获得当前页面信息
      * @author GUOYN
      * @date 2022-09-14 10:34:50  * @param phone
     * @param name
     * @param idCard
     * @param start
     * @param pageSize
      * @return {@link List< Patient>}
      */
    List<Patient> getPatientList(long phone, String name, String idCard, int start, int pageSize);
    /**
      * @description 根据id获得当前用户详细信息
      * @author GUOYN
      * @date 2022-09-14 11:56:53  * @param id
      * @return {@link Patient}
      */
    Patient getPatientView(int id);
    /**
      * @description 根据id删除用户/患者
      * @author GUOYN
      * @date 2022-09-14 12:05:05  * @param id
      * @return {@link boolean}
      */
    boolean delPatientById(int id);
    /**
      * @description 根据当前用户id获得就诊状态
      * @author GUOYN
      * @date 2022-09-14 16:34:15  * @param idCard
      * @return {@link int}
      */
    int getRegStateByIDCard(int userId);
    /**
      * @description 根据当前用户id获得就诊时间
      * @author GUOYN
      * @date 2022-09-14 16:37:26  * @param id
      * @return {@link Date}
      */
    List<Date> getRecordTimeByIDCard(int userId);


     /**
      *@author WangLuDong
      *@Description 方法描述 修改用户患者信息
      *@Date 2022-09-16 09:07:43
       * @param
      *@Return {@link null}
      */
    boolean modifyPatientById(Patient patient);

     /**
      *@author WangLuDong
      *@Description 方法描述 查询指定患者
      *@Date 2022-09-26 12:04:37
      *@Return {@link null}
      */
    Patient getPatientAll(int id);
}
